/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package detonadores;

import com.sun.xml.ws.runtime.dev.Session;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import conexion.conexion;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author Edgar Augusto A
 */
@WebServlet(name = "logueo", urlPatterns = {"/logueo"})
public class dsd extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        try {            
            // Variables del Sistema
            String UsuarioIN=request.getParameter("usuario");
            String PassIN=request.getParameter("password");
            String id = null;
            String pas = null;
            String Nombd = null;
            String Apebd = null;
            int Permiso = 0;
            int Estado = 0;
            int Aplicaciones = 0;  
            String Cargo=null;
            String fecha=null;
            String validaDate=null;
            //---------------------------------------------------
            //Validación datos
            if(UsuarioIN.equals("")){
            response.sendRedirect("index.jsp");
            }else if(PassIN.equals("")){
            response.sendRedirect("index.jsp");
            }else if(!UsuarioIN.equals("") && !PassIN.equals("")){
            //----------------------------------------------------    
            // Consulta a la Base de datos
            Statement algo = conexion.conectarse();
            String consultar_t = "select * from usuario where identificacion="+UsuarioIN+"";
            ResultSet acep = algo.executeQuery(consultar_t);
            //---------------------------------------------------
            // Captura de Datos de la BD
            try {
            while (acep.next()) {
            id=acep.getString("Identificacion");
            pas=acep.getString("Password");
            Nombd=acep.getString("Nombre");
            Apebd=acep.getString("Apellido");
            Cargo=acep.getString("Cargo");
            Permiso=acep.getInt("Permiso");
            Estado=acep.getInt("Estado");
            Aplicaciones=acep.getInt("Aplicaciones");  
            //out.println(id);
            //out.println(pas);
            //out.println(Nombd);
            //out.println(Apebd);
            //out.println(Permiso);
            //out.println(Estado);
            //out.println(Aplicaciones);
           }
            //----------------------------------------------------
            //Validación Sesión         
            if(UsuarioIN.equals(id)){
            if(PassIN.equals(pas)){
            if(Estado==1){    
            HttpSession session_actual=request.getSession(true);
            session_actual.setAttribute("ID", id);
            session_actual.setAttribute("NOMBRE", Nombd);
            session_actual.setAttribute("APELLIDO", Apebd);
            session_actual.setAttribute("PERMISO", Permiso);
            session_actual.setAttribute("ESTADO", Estado);
            session_actual.setAttribute("APLICACIONES", Aplicaciones);
            session_actual.setAttribute("CARGO", Cargo);
            //Obtiene Fecha del sistema
            Calendar ahoraCal = Calendar.getInstance();
            String integrafecha=ahoraCal.get(Calendar.YEAR)+"-"+ahoraCal.get(Calendar.MONTH)+"-"+ahoraCal.get(Calendar.DAY_OF_MONTH);
            //----------------------------------------------------
            //Consulta si la Fecha Existe;
            String validaReFecha="Select max(IdHistorial), FechaAcceso from Historial where identificacion="+id+"";
            ResultSet validaReF = algo.executeQuery(validaReFecha);
            while(validaReF.next()){
            validaDate=validaReF.getString("FechaAcceso");
            }
            //----------------------------------------------------
            //sql para insertar en la tabla Historial
            String entra = "insert into Historial values (0,'"+integrafecha+"','"+id+"')";
            try {
            // validacion if para no repetir fecha    
          if(!integrafecha.equals(validaDate)){      
          if (algo.executeUpdate(entra)==Statement.EXECUTE_FAILED)
          {
             out.println("ERROR NO SE INSERTO DATOS EN HISTORIAL");
                }
          else {
             // Consulta a la Base de datos
            String trearFecha = "select max(idHistorial),FechaAcceso from Historial where identificacion="+id+"";
            ResultSet acepfecha = algo.executeQuery(trearFecha);
            //--------------------------------------------------- 
            while (acepfecha.next()) {
            fecha=acepfecha.getString("FechaAcceso");
            }
             session_actual.setAttribute("FECHAACCESO", fecha);
             response.sendRedirect("sistema.jsp"); 
                }
            }else{
          // Consulta a la Base de datos
            String trearFecha = "select max(idHistorial),FechaAcceso from Historial where identificacion="+id+"";
            ResultSet acepfecha = algo.executeQuery(trearFecha);
            //--------------------------------------------------- 
            while (acepfecha.next()) {
                fecha=acepfecha.getString("FechaAcceso");
            }
             session_actual.setAttribute("FECHAACCESO", fecha);
             response.sendRedirect("sistema.jsp"); 
          }
          //-------------------------------------------------------
          }
           catch (Exception es){
               out.println(es);
          }
           //----------------------------------------------------- 
            }else if(Estado==0){
            response.sendRedirect("index.jsp");
            HttpSession session_actual=request.getSession();
            session_actual.invalidate();
            }
            }else{
            HttpSession session_actual=request.getSession();
            session_actual.invalidate();
            response.sendRedirect("index.jsp");
            }
            }else{
            HttpSession session_actual=request.getSession();
            session_actual.invalidate();   
            response.sendRedirect("index.jsp");
            }
            //-----------------------------------------------------           
            } catch (SQLException ex) {
                out.println(ex);
            }
            }
            //-----------------------------------------------------
            
        } finally {            
            out.close();
        }
    }
}


